package com.ruoyi.cc.config;

import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * RabbitMQ配置类：提供队列操作和消息发送的核心Bean
 */
@Configuration
public class RabbitMQConfig {

    /**
     * 配置RabbitAdmin：用于动态声明/删除队列（手动操作队列核心Bean）
     * @param connectionFactory RabbitMQ连接工厂（Spring自动注入）
     * @return RabbitAdmin实例
     */
    @Bean
    public AmqpAdmin amqpAdmin(ConnectionFactory connectionFactory) {
        return new RabbitAdmin(connectionFactory);
    }

    /**
     * 配置RabbitTemplate：用于发送消息到队列
     * @param connectionFactory RabbitMQ连接工厂
     * @return RabbitTemplate实例
     */
    @Bean
    public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        // 设置消息发送确认机制（可选，确保消息发送成功）
        rabbitTemplate.setMandatory(true);
        return rabbitTemplate;
    }
}